查缺补漏1

文章讲述了二进制与十进制之间的转换方法,包括整数和小数部分的处理。讨论了数据类型转换中的问题,如short到int的转换,并解释了自增运算的差异。此外,还介绍了逻辑运算符(短路与或)的使用以及位移运算(左移、右移)的概念,提供了快速计算和交换数值的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、进制与转换

1 byte = 8 bit

-3用二进制表示:

0000 0011 #3

1111 1100 #按位取反

1111 1101 #加1

小数十进制与二进制转换

二进制——>十进制:按权相加(310.01=3x2^2+1x2^1+0x2^0+0x2^-1+1x2^-2)

十进制——>二进制:整数部分:除2取余,倒序排列;

小数部分:乘2取整,顺序排列。(0.625——>0.101)

数据类型转换例子(boolean类型不能转换为任何其他数据类型)

short s = 1;

s = s + 1; #报错! 因为等式右边s+1会自动转化为int类型的数据,而左边为short类型,可能存在精度确实

s += 1; #注意!此时不会报错

int s = s + 1 #正确

自增(b++先赋值后自增,++b先自增后赋值)

int a=1;

int b=2;

// b = a + b - (++b) #b=0

// a = ++a + (b--) + (a-b) + b #6:2+2+(2-1)+1

与(或)和短路与(或)(顺序不同)

短路与:&& false && true :false

短路或:|| false || ture :true

// &:在逻辑运算中分别计算表达式两边的结果,再做&运算,在做位运算时表示按位与

// &&:先计算左边表达式,如果左边false直接返回false,如果左边为true则再计算右边进行判断

// | :在逻辑计算中分别计算表达式两边的结果,再做|运算,在做位运算时表示按位或

// ||:先计算左边表达式,如果左边为true直接返回true,如果左边为false则再计算右边进行判断

(所以短路与、或效率更高,建议使用)

位运算(效率高)

左移:a<<b,将二进制的a逐位左移b位,最低位空出的b位补0

带符号右移:a>>b,将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位

无符号右移:a>>>>b,将二进制形式的a逐位右移b位,最高位空出的b位补0

100: 00000000 00000000 00000000 01100100

-100: 11111111 11111111 11111111 10011100

-100<<3: 11111111 11111111 11111100 11100000

-100>>3: 11111111 11111111 11111111 11110011

-100>>>>3: 00011111 11111111 11111111 11110011

~面试:以最快的速度计算8*4

0000 1000 //8

0010 0000 //32

所以:int result = 8<

原理:

左移:位移数作为2的次幂与操作数相乘(10<

右移:操作数除以位移数的2次幂(40>>2=10)

~面试:如何不通过第三个变量交换两个数

(1)利用表达式: a = a + b - (b=a);

(2) 通过+-: a=a+b; b=a-b; a=a-b;(可能溢出)

(3)通过乘除:a=a*b; b=a/b a=a/b;(可能溢出)

(4)位运算(最快的!):a=a^b; b=a^b; a=a^b;(a,b不能相同)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值