找回密码
 注册

QQ登录

只需一步,快速开始

查看: 653|回复: 1

二进制的转换和构建

[复制链接]
发表于 2024-1-26 16:39:42 | 显示全部楼层 |阅读模式

# w* r' Q! W+ d, ~% u! G4 c
" x: I& y5 u, O* ^5 M; {学计算机的朋友刚开始学习时都要接触进制之间的转换,二进制、十进制、八进制、十六进制等,这个是很枯燥的,转来转去) J, p$ H6 H! V, s' P% t% X9 z
就转蒙圈了,别蒙别蒙,今天咱们一个一个搞定,看看二进制和十进制之间如何相互转换的。这个算法时间复杂度是O(1),没! u/ i, E, e( L. f1 V
想到吧!我想到的算法是,将n一直除2直到n变为0,如果途中出现余数不为0则说明n不是2的幂。
! f5 s* r! a% W这样算法时间复杂度是O(log2(n))。可谁知利用二进制二进制位运算后,立马变为O(1),真是不可思议。为什么会有这种巧妙
# m$ G' N( g; V# K) w* S9 B3 o的算法呢,还是因为二进制数只有0,1两个数码,能进行位逻辑运算。1、二进制转化十进制方式1:. o1 |6 h9 |- c6 ~( E1 z- R4 E5 h
使用BigInteger类进行十进制数据的构建。二进制和十进制怎么互相转化??/ B4 N& ]( o2 a( g
2、二进制转化十进制方式2:
  X+ \& ?( N# q/ S+ i8 ]使用Integer.parseInt方法进行二进制转化十进制。二进制和十进制怎么互相转化??
: n9 ~6 M' d& i$ G4 E% `$ v. F- E4 U3、二进制转化十进制方式3:. m% v& n# H: H% i2 _- j
使用自定义的数学算法规则进行二进制转化十进制。二进制和十进制怎么互相转化??
# C  _" J- U. {' b' S# b; q, j$ Y4、十进制转化二进制方式1:
2 m7 ]( k( H: Z0 D. \  U使用BigInteger类进行十进制数据的构建并转化为二进制。二进制和十进制怎么互相转化??
6 j5 A% e! o9 y$ i% X7 S% h5、二进制转化十进制方式2:
- H! y% O* m% @* x% c% |3 }使用Integer.parseInt方法进行十进制转化二进制。 一、计算一个数字的二进制中的1的个数int   NumberOfOne(int n)
% `2 o" f( j% M! b
( M6 d' F3 F) M5 w" R4 H& l{& B3 p7 C. b8 X

  L$ F- F; n3 \( o" D' uint count  = 0;
) f5 V. ?( {0 j: |0 s
2 b8 F: \/ j1 S# pwhile(n)
) J* M+ b# A, t8 \, f* `$ L* ~4 S! y! h: A5 e4 y4 ?
{
3 F: ~' S* E0 B" j; R
/ z, C$ A! {# Z0 \1 C: t+ C++count;
  E& o- g( W8 |% E  i7 S/ C2 T! M  w. R0 F0 P
n = n&(n-1);
/ [( q6 A: n$ l. }2 V0 h  [+ A  `' z2 H
}
# k5 S8 b/ o# ?7 k$ V% Y, L
* W$ w) ^- F+ }return count;
/ q  F4 ^  i% m9 `$ u: |! s% K/ j2 N7 I1 c" K( {+ {
}) G8 U( i( V8 e5 M" ]' m) [! X* N

2 B, c& ?4 d. _& i总结分析:把一个整数减去一,再和原整数做与运算,会把最右边的一个1变成0,那么一个整数而二进制表示中有多少个1就1 u- |- u& `" D
可以进行多少次这样的操作。
, N# L# {: Y7 Y6 t* f0 l2、用一条语句判断一个整数是不是2的整数次方。分析:一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位1 h, @5 A; b  q5 z; I7 n
是1,而其他的所有的位是0.( Z9 s1 W5 w: R' l1 c
& p4 t2 H9 Y1 k+ n) d
3、输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n,分析:第一步求这两个数的异或(^),第二
8 l2 ^$ F8 k2 ]$ j" y1 a, L$ h& E部统计异或结果中1的位数。  k: c: c+ P9 g+ @0 G
% w7 e$ h2 `5 n) c, {! C" |

* U8 G" o9 O# Q! D( M
发表于 2024-1-27 08:52:49 | 显示全部楼层
插旗学习,感谢分享
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-6-18 01:23 , Processed in 0.021955 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表