C语言 对字节的高位和低位进行互换!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 对字节的高位和低位进行互换!相关的知识,希望对你有一定的参考价值。

即第一位和第八位,第二位和第七位。(要求不用循环)
其实我的用意是想减少算法的时间复杂度,并不是说只要不用for或者while就可以了
我想现在最好的算法也是象楼下说的4次 ,但不知道有没有什么好办法可以控制在3次以下(比如用异或,移位,取反等等)
kookhit的算法和用for语句基本上是没有区别的了,不过还是要谢谢你!

可以直接用位运算:按位与,按位或,移位等

#include "stdio.h"
int main()

unsigned char tmp1,tmp2;

printf("please input a char: ");
scanf("%c", &tmp1);
tmp2=
((tmp1&0x01)<<7)
|((tmp1&0x02)<<5)
|((tmp1&0x04)<<3)
|((tmp1&0x08)<<1)
|((tmp1&0x10)>>1)
|((tmp1&0x20)>>3)
|((tmp1&0x40)>>5)
|((tmp1&0x80)>>7);
printf("converted char is: %c\n", tmp2);
return 0;
参考技术A 可以直接用位运算:按位与,按位或,移位等
#include
"stdio.h"
int
main()

unsigned
char
tmp1,tmp2;
printf("please
input
a
char:
");
scanf("%c",
&tmp1);
tmp2=
((tmp1&0x01)<<7)
|((tmp1&0x02)<<5)
|((tmp1&0x04)<<3)
|((tmp1&0x08)<<1)
|((tmp1&0x10)>>1)
|((tmp1&0x20)>>3)
|((tmp1&0x40)>>5)
|((tmp1&0x80)>>7);
printf("converted
char
is:
%c\n",
tmp2);
return
0;
参考技术B #include "stdio.h"

struct bits_t

char b1:1;
char b2:1;
char b3:1;
char b4:1;
char b5:1;
char b6:1;
char b7:1;
char b8:1;
;
union u_cache

char c;
struct bits_t ch;
;

int main()

union u_cache tmp1,tmp2;

printf("please input a char: ");
scanf("%c", &tmp1.c);

tmp2.ch.b1 = tmp1.ch.b8;
tmp2.ch.b2 = tmp1.ch.b7;
tmp2.ch.b3 = tmp1.ch.b6;
tmp2.ch.b4 = tmp1.ch.b5;
tmp2.ch.b5 = tmp1.ch.b4;
tmp2.ch.b6 = tmp1.ch.b3;
tmp2.ch.b7 = tmp1.ch.b2;
tmp2.ch.b8 = tmp1.ch.b1;

printf("converted char is: %c\n", tmp2.c);

return 0;
参考技术C 按位交换也就4次
可以不用循环
参考技术D 赞成 高经理 的回答。
他的做法的对的。

Go语言判断一个字节的高位大于四

Go语言判断一个字节的高位大于四

1.步骤:

第一步,将该字节的低位清零(与0xF0进行&运算)

  • 为了后面与0x40比较
  • 0xF0转为二进制是1111 0000,&运算(两个同时为1,结果为1,否则为0)后该字节高位不变,低位清零

第二步,低位清零后的值与0x40进行比较

  • 0x40转为二进制是0100 0000,低位清零后比较的就是高位

2.代码:

package main

import "fmt"

func main() {
    var a uint8 = 0x68
    var b uint8 = a & 0xF0
    fmt.Printf("result : %t \n",boolCheck(b))
}

func boolCheck(x uint8) bool {
	retutn x >= 0x40
}

3.输出:

true

以上是关于C语言 对字节的高位和低位进行互换!的主要内容,如果未能解决你的问题,请参考以下文章

C语言 大小端 字节对齐

C语言中数组高位转为低位

c语言中怎么将十六进制中的高位和低位分别存到数组中

C语言高低位互换操作

Go语言判断一个字节的高位大于四

C语言位操作